package com.atguigu.day22.clazz04;

import org.junit.Test;
/*
反射: 在运行状态中,对于任意一个类 对于任意一个对象 可以获取/调用属性方法.动态获取信息调用方法的机制
获取Class对象的四种方式:
    1.对象名.getClass();
    2. 类名.class
    3.Class.forName(全路径名)
    --------
    4.类的加载器对象.loadClass(全路径名);



 */
public class ClassTest {

    @Test
    public void test04() throws ClassNotFoundException {
        //获取类的加载器
        ClassLoader classLoader = Animal.class.getClassLoader();

        Class<?> aClass = classLoader.loadClass("com.atguigu.clazz04.Dog");
        System.out.println("aClass = " + aClass);

    }


    @Test
    public void test03() throws ClassNotFoundException {
                                  //全路径名/全类名
        Class<?> c = Class.forName("com.atguigu.clazz04.Dog");
        System.out.println("c = " + c);
    }


    @Test
    public void test02(){
        Class<Dog> dogClass = Dog.class;
        System.out.println("dogClass = " + dogClass);
    }

    @Test
    public void test01(){
       Animal a = new Dog();
        Class c = a.getClass();
        System.out.println("c = " + c);
    }
}
